package usecase;

import java.util.Scanner;

/*
 *4. 编程题 自定义数组扩容规则，当已存储元素数量达到总容量的 80%时，扩容 1.5 倍。 例如，总容量是 10，当输入第 8 个元素时，数组进行扩容，容量从 10 变 15。
 * */
public class ExaminationQuestionFour {
    public static void main(String[] args) {
        //初始化一个数组
        Object[] objArray = new Object[10];
        while (true) {
            int index = 0;
            System.out.println("请输入新增元素内容:");
            Scanner scan = new Scanner(System.in);
            if (scan.hasNext()) {
                //接收输入内容
                String str1 = scan.next();
                //将数据添加到数组的第一个非空的下标中
                for (int i = 0; i < objArray.length; i++) {
                    if (objArray[i] == null || objArray[i].toString().trim() == "") {
                        index = i + 1;
                        objArray[i] = str1;
                        break;
                    }
                }
                //判断下标是否达到数组的整体长度的80%,如果达到就进行扩容
                if ((double) index / objArray.length >= 0.8) {
                    int newArraySize = (int) Math.ceil(objArray.length * 1.5);
                    Object[] newObjArray = new Object[newArraySize];
                    for (int i = 0; i < objArray.length; i++) {
                        if (objArray[i] != null && objArray[i].toString().trim() != "") {
                            newObjArray[i] = objArray[i];
                        } else {
                            break;
                        }
                    }
                    objArray = newObjArray;
                    System.out.println("当前数组长度达到80%，进行数组扩容,扩容后数组长度为：" + objArray.length);
                }

            }
        }

    }
}
